﻿using System.Collections.Generic;
using System.Reflection;
using RG.Common.Configuration;
using RG.Common.WPF.Filters;
using RG.Common.Configuration;

namespace RG.Common.WPF.Settings
{
    public class FilterSettingsAttribute : BaseSettingsAttribute
    {
        public override IEnumerable<ISetting> Collect(object obj, string objID, PropertyInfo pi)
        {
            var collected = new List<ISetting>();
            var pi_obj = pi.GetValue(obj, null); //объект который лежит в этом свойсве
            //вопрос - надо ли делать проверки на null и соответсвия типов или оставить на совести программиста который будет помечать этим атрибутом свойства
            var fs = (FiltersFrameVM)pi_obj;
            foreach (var f in fs.Filter)
            {
                collected.AddRange(ApplicationSettings.CollectByAttribute(f, f.Id));
            }
            return collected;
        }
    }
}
